The perceived quality of an image appearing on a computer video screen depends on the color resolution and spatial resolution of the video display hardware. Color resolution is measured by the number of colors that can be simultaneously displayed, or are "active" on screen. For example, an IBM-compatible personal computer with a VGA-based display system can simultaneously display 16 colors. A personal computer with a "super" VGA (SVGA)-based display system can simultaneously display 256 colors. Spatial resolution is measured by the number of individual pixels (picture elements) that can be placed across the screen. For example, a computer with a VGA-based display system can display 640 horizontal by 480 vertical pixels (640.times.480) on screen in its highest graphics mode. Higher spatial resolutions may be achieved with display systems following the SVGA, XGA and other graphics standards.
Color resolution is equivalently measured by the number of data bits for storing each pixel of the image in a computer's video memory (also known as the bit "depth" of the frame display buffer). Display systems with four bits per pixel can display only 16 simultaneous colors. Which 16 colors (out of the millions possible) are simultaneously displayed depends on the contents of a color look-up table (CLUT) that is addressed by the four-bit color value of the screen memory. The particular set of 16 colors within the look-up table is referred to as a displayable color palette, and it is possible to switch palettes to emphasize colors tailored to individual images on the display. For example, one color palette may better portray a polar bear in a snowstorm while another palette may better portray a brown bear in a cave. As the number of bits per pixel grows from four to eight to twelve, etc., the size of the displayable color palette and the number of simultaneously displayable colors grows.
However, application program interfaces provided by operating systems software can often support a much larger number of active colors than supported by VGA, SVGA and other low-bit display standards. The Microsoft Windows.RTM. program, for example, supports over 16 million active colors. An application such as a paint program using Windows.RTM. can specify 24 bits for each pixel of an image, typically eight bits in each color dimension of red, green, and blue. The specified bit values are called an RGB value (for red, green and blue), with each eight-bit value representing an intensity level of the respective color between 0 (zero intensity) and 1 (full intensity). Colors are specified by an ordered triple of values corresponding to the intensities of red, green and blue that are mixed to form the color. Red, for example has an RGB value of (1, 0, 0) while purple, which is half-intensity red and half-intensity blue, has an RGB value of (1/2, 0, 1/2).
In a typical computer system, color is quantized according to a color model such as red-green-blue (RGB). The range of colors displayable on the given monitor can be quantized within a three dimensional cube of red, green and blue intensity values according to the RGB model. Other color quantization models are also used and may be more suitable in certain applications. However, all the color models use a three dimensional representation of the color range, or gamut.
State-of-the-art display systems which go well beyond VGA and SVGA typically have 24 (or more) bits per pixel for displaying about 16.8 million colors simultaneously. They also provide a spatial resolution of 1280.times.1024 or higher. Such display systems are known as "true color" systems because they allow the actual color to be specified accurately and independently for each pixel. True color systems do not require color look-up tables because the values stored in the screen memory for each pixel directly indicate the color to appear on the screen. The colors are said to be "direct mapped." Direct mapping allows any pixel to be any color.
However, a major drawback of true color display systems is their cost. They require significant amount of video memory for a display buffer and an accelerator device. For desired spatial resolutions of 1024.times.768 or higher, such systems cost as much or more than an otherwise state-of-the-art personal computer system. True color systems may also perform at slower speeds than 8-bit display systems.
In the prior art, there have been different approaches taken to provide acceptable quality images without the cost of true color systems. One approach, mentioned above, is to vary the displayable color palette depending on the most common colors in an image to be displayed. Such an adaptive palette technique, however, produces undesirable effects if several images are to be simultaneously displayed on screen. Adapting the displayable color palette to an individual image on the display typically degrades the quality of the other images. And when the focus of the display is switched to one of the other images, the displayable color palette must be re-adapted to that image. Consequently, the quality of the image of the previous image becomes degraded in what is known as a "palette war."
A second approach is to truncate the 24 bits per pixel to eight or four bits by simply removing a sufficient number of least significant bits from each color dimension. The problem with truncation is that different intensities of the same color are lost.
A third approach is "ordered dithering." Dithering is a process for replacing a non-displayable color (one not within the present displayable color palette) with a displayable color within a defined area to simulate an average color. Ordered dithering takes into account additional factors in determining the replacement color, such as the relative location of the pixel being dithered within the image.
Yet another approach is "error diffusion" dithering. Error diffusion is a process for spreading, or diffusing, the error between the true color and the displayed color of a pixel to adjacent pixels in the image. Common error diffusion techniques include the Floyd-Steinberg filter, the Stucki filter, and the Burkes filter.
Although prior 4 and 8-bit display systems using these several approaches work to some degree, none has proven to be a satisfactory substitute for a true color system. Each produces artifacts, or unwanted visual byproducts, when an image is displayed with spatial resolution of 60 pixels per inch or greater (640.times.480 on a 13" monitor or 1024.times.768 on a 19" monitor). An object of this invention, therefore, is to provide a suitable technique for displaying near true color images using a minimum number of bits per pixel.